home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_10_01
/
1001126a
< prev
next >
Wrap
Text File
|
1991-11-17
|
2KB
|
59 lines
#include <iostream.h>
#include <iomanip.h>
// Crude date class to demonstrate
// customized stream I/O -- no error checking attempted
class date
{
unsigned int year; // 0-99
unsigned int mon; // 1-12
unsigned int day; // 1-31
// Allow the I/O stream operators to access the private members
// of the date class. You can't define these as members
// because the first argument is a stream, not a date.
friend ostream & operator <<(ostream &s,date dt);
friend istream & operator >>(istream &s,date &dt);
public:
// constructor
date(int _mon=1,int _day=1,int _year=0)
{ mon=_mon; day=_day; year=_year; }
};
// Output a date as: MM/DD/YY
// No attempt was made to pad the elements with zeros
ostream & operator <<(ostream &s,date dt)
{
s << dt.mon << "/" << dt.day << "/" << dt.year;
return s;
}
// Input a date in the format: MM/DD/YY -- allow any character
// to seperate the elements (i.e., MM-DD-YY, MM,DD,YY, etc.)
// Notice that the date is a reference (&dt) so we modify
// the actual date -- not a copy passed by value.
istream & operator >>(istream &s,date &dt)
{
int m,d,y;
char dummy; // this char holds the seperator
s >> m >> dummy >> d >> dummy >> y;
dt.mon=m;
dt.day=d;
dt.year=y;
return s;
}
// Simple demo for dates. Notice how the stream I/O operators
// have been overloaded to accept the date class.
main()
{
date jan1(1,1,70);
date bday;
cout << "Enter your birthday (MM/DD/YY): ";
cin >> bday;
cout << "The first date is " << jan1 << "\n";
cout << "Your birthday is " << bday << "\n";
cout << 1;
}
// End of File